package TOP101;

import java.util.Stack;

/**
 * @Question BM8
 * @Date 2022/11/2 17:35
 * @Solution
 */
public class BM8 {
    //1.快慢指针
    public ListNode FindKthToTail(ListNode pHead, int k) {
        ListNode fast = pHead;
        for (int i = 0; i < k; i++) {
            if (fast == null) {
                return null;
            }
            fast = fast.next;
        }
        ListNode slow = pHead;
        while (fast != null) {
            fast = fast.next;
            slow = slow.next;
        }
        return slow;
    }
    // 2.用栈的方法
//    public ListNode FindKthToTail (ListNode pHead, int k) {
//        ListNode cur = pHead;
//        int len=0;
//        while(cur!=null) {
//            len++;
//            cur=cur.next;
//        }
//        if(k>len) {
//            return null;
//        } else if(k==len) {
//            return pHead;
//        }
//        Stack<ListNode> stack = new Stack<>();
//        while(pHead!=null) {
//            stack.push(pHead);
//            pHead=pHead.next;
//        }
//        ListNode ans = null;
//        while(!stack.isEmpty()&&k>0) {
//            ListNode l = new ListNode(stack.pop().val);
//            l.next=ans;
//            ans=l;
//            k--;
//        }
//        return ans;
//    }
}
